In many computer systems, entities compete for use of a particular resource. A goal in some such systems is to provide equality of service among the competing entities.
A known way to allocate a resource among such competing entities is to provide each entity with equal time using the resource. This may result in locally fair arbitration of the resource. However, locally fair arbitration can result in unfairness at the global level.
A known way to overcome this difficulty is to dynamically observe demands made by the competing entities and to adjust resource allocation accordingly. Another known way is to allocate a resource on the basis of waiting times associated with each competing entity. However, these schemes introduce additional overhead.